home *** CD-ROM | disk | FTP | other *** search
/ C++ für Kids / C++ for kids.iso / Buch / Obutton1.cpp < prev    next >
C/C++ Source or Header  |  1999-01-22  |  3KB  |  94 lines

  1. //---------------------------------------------------------------------------
  2. #include <vcl\vcl.h>
  3. #pragma hdrstop
  4.  
  5. #include "Obutton1.h"
  6.  
  7. TColor OColor[4] =
  8.   {clBlack, clGray, clSilver, clWhite};
  9.  
  10. //---------------------------------------------------------------------------
  11. static inline TOButton *ValidCtrCheck()
  12. {
  13.     return new TOButton(NULL);
  14. }
  15. //---------------------------------------------------------------------------
  16. __fastcall TOButton::TOButton(TComponent* Owner)
  17.     : TCustomControl(Owner)
  18. {
  19.   Color = clBtnFace;
  20.   SetSize (Rect (0, 0, 50, 50));
  21.   Pressed = false;
  22. }
  23. //---------------------------------------------------------------------------
  24. namespace Obutton1
  25. {
  26.     void __fastcall Register()
  27.     {
  28.         TComponentClass classes[1] = {__classid(TOButton)};
  29.         RegisterComponents("ZusΣtzlich", classes, 0);
  30.     }
  31. }
  32. //---------------------------------------------------------------------------
  33. void __fastcall TOButton::SetSize (TRect Rechteck)
  34. {
  35.   Left   =  Rechteck.Left;
  36.   Top    =  Rechteck.Top;
  37.   Width  =  Rechteck.Right  - Rechteck.Left;
  38.   Height =  Rechteck.Bottom - Rechteck.Top;
  39. }
  40. //---------------------------------------------------------------------------
  41. void __fastcall TOButton::SetColor(TColor OBrush, TColor OPen)
  42. {
  43.   Canvas->Brush->Color = OBrush;
  44.   Canvas->Pen->Color = OPen;
  45. }
  46. //---------------------------------------------------------------------------
  47. void __fastcall TOButton::MouseDown
  48.   (TMouseButton Button, Classes::TShiftState Shift, int X, int Y)
  49. {
  50.   TCustomControl::MouseDown (Button, Shift, X, Y);
  51.   if (Button == mbLeft)
  52.   {
  53.     Pressed = true;
  54.     Paint ();
  55.   }
  56. }
  57. //---------------------------------------------------------------------------
  58. void __fastcall TOButton::MouseUp
  59.   (TMouseButton Button, Classes::TShiftState Shift, int X, int Y)
  60. {
  61.   TCustomControl::MouseUp (Button, Shift, X, Y);
  62.   Pressed = false;
  63.   Paint ();
  64. }
  65. //---------------------------------------------------------------------------
  66. void __fastcall TOButton::Paint (void)
  67. {
  68.   // Liniendicke
  69.   Canvas->Pen->Width = 2;
  70.  
  71.   // OButton gedrⁿckt
  72.   if (Pressed)
  73.   {
  74.     for (int i=1; i<5; i++)
  75.     {
  76.       SetColor (OColor[(i-1)/2], OColor[(i-1)/2]);
  77.       Canvas->Arc (i, i, Width-i, Height-i, i, i, i, i);
  78.     }
  79.   }
  80.   // OButton nicht gedrⁿckt
  81.   else
  82.   {
  83.     for (int i=1; i<5; i++)
  84.     {
  85.       SetColor (OColor[i-1], OColor[i-1]);
  86.       Canvas->Arc (i, i, Width-i, Height-i, i, i, i, i);
  87.     }
  88.   }
  89.   // OButton-FlΣche
  90.   SetColor (Color, Color);
  91.   Canvas->Ellipse (5, 5, Width-5, Height-5);
  92. }
  93. //---------------------------------------------------------------------------
  94.